home *** CD-ROM | disk | FTP | other *** search
- /*
- * Source machine generated by GadToolsBox V1.4
- * which is (c) Copyright 1991,92 Jaba Development
- */
-
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/classes.h>
- #include <intuition/classusr.h>
- #include <intuition/imageclass.h>
- #include <intuition/gadgetclass.h>
- #include <libraries/gadtools.h>
- #include <graphics/displayinfo.h>
- #include <graphics/gfxbase.h>
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
- #include <clib/diskfont_protos.h>
-
- #include <ctype.h>
- #include <string.h>
- #include <stdlib.h>
-
- #define CATCOMP_NUMBERS
-
- #include "project.catalog.h"
-
- #include "project.h"
-
- UWORD ProjectLeft = 0;
- UWORD ProjectTop = 409;
- UWORD ProjectWidth = 728;
- UWORD ProjectHeight = 144;
-
- UWORD MessLeft = 0;
- UWORD MessTop = 426;
- UWORD MessWidth = 728;
- UWORD MessHeight = 127;
-
- struct Window *ParmsLineWnd = NULL;
- struct Gadget *ParmsLineGList = NULL;
- struct Gadget *ParmsLineGadgets[3];
-
- struct Screen *Scr = NULL;
- APTR VisualInfo = NULL;
- struct Window *ProjectWnd = NULL;
- struct Window *MessWnd = NULL;
- struct Window *DirSetWnd = NULL;
- struct Window *CompileWnd = NULL;
- struct Gadget *ProjectGList = NULL;
- struct Gadget *MessGList = NULL;
- struct Gadget *DirSetGList = NULL;
- struct Gadget *CompileGList = NULL;
- struct Menu *ProjectMenus = NULL;
- struct IntuiMessage ProjectMsg;
- struct IntuiMessage MessMsg;
- struct IntuiMessage DirSetMsg;
- struct IntuiMessage CompileMsg;
- struct TextFont *NFont = NULL;
- struct Gadget *ProjectGadgets[1];
- struct Gadget *MessGadgets[1];
- struct Gadget *DirSetGadgets[16];
- struct Gadget *CompileGadgets[2];
- UWORD DirSetZoom[4],ProjectZoom[4],MessZoom[4],ParmsLineZoom[4],CompileZoom[4];
- UBYTE *ProjectWdt = (UBYTE *)"Project Handler : Sources Window / Project Name : No Name";
- UBYTE *DirSetWdt = (UBYTE *)"Project Handler : Directory settings";
- UBYTE *MessWdt = (UBYTE *)"Project Handler : Messages Window";
- UBYTE *ParmsLineWdt = (UBYTE *)"Project Handler : Parameters Line";
- UBYTE *CompileWdt = (UBYTE *)"Project Handler : Processing";
- struct TextAttr *Font, Attr;
- UWORD FontX, FontY;
- UWORD OffX, OffY;
-
- struct NewScreen ns = { 0,0,0,0,2,0,1,0,0,NULL,
- "DICE Project Handler Screen 2.0 ©1993 by Cedric Counotte",
- };
-
- struct TextAttr times13 = {
- ( STRPTR )"times.font", 13, 0x00, 0x20 };
-
- struct TextAttr topaz8 = {
- ( STRPTR )"topaz.font", 8, 0x00, 0x20 };
-
- struct IntuiText ProjectIText[] = {
- 1, 0, JAM1,10, 9, &topaz8, (UBYTE *)"Source Object C Module Name", NULL };
-
- #define Project_TNUM 1
-
- struct IntuiText CompileIText[] = {
- 1, 0, JAM2,148, 14, ×13, NULL, NULL,
- 2, 0, JAM1,147, 13, ×13, NULL, NULL };
-
- #define Compile_TNUM 2
-
- struct NewMenu ProjectNewMenu[] = {
- NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
- NM_ITEM, (STRPTR)"New", (STRPTR)"N", 0, 0L, (APTR)ProjectNew,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Open", (STRPTR)"O", 0, 0L, (APTR)ProjectOpen,
- NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)ProjectSave,
- NM_ITEM, (STRPTR)"Save as", (STRPTR)"K", 0, 0L, (APTR)ProjectSaveas,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Iconify", (STRPTR)"I", 0, 0L, (APTR)ProjectIcon,
- NM_ITEM, (STRPTR)"About...", (STRPTR)"J", 0, 0L, (APTR)ProjectAbout,
- NM_ITEM, "Help..." , (STRPTR)"H" , 0 , 0L , (APTR)ProjectHelp,
- NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)ProjectQuit,
- NM_TITLE, (STRPTR)"Objects", NULL, 0, NULL, NULL,
- NM_ITEM, (STRPTR)"Edit", (STRPTR)"E", 0, 0L, (APTR)ProjectEdit,
- NM_ITEM, (STRPTR)"Include Files", (STRPTR)"F", 0, 0L, (APTR)ProjectInclude,
- NM_ITEM, (STRPTR)"Comments", NULL , 0 , 0L , NULL,
- NM_SUB , (STRPTR)"Edit",(STRPTR)"+" , 0 , 0L , (APTR)ProjectComment,
- NM_SUB , (STRPTR)"Remove",(STRPTR)"-" , 0 , 0L , (APTR)ProjectCommentKill,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Add", (STRPTR)"A", 0, 0L, (APTR)ProjectAdd,
- NM_ITEM, (STRPTR)"Remove", (STRPTR)"R", 0, 0L, (APTR)ProjectRem,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Open Extern", (STRPTR)"X", 0, 0L, (APTR)ProjectOther,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, "Open Autodocs" , "D" , 0 , 0L , (APTR)ProjectAutoDocs,
- NM_TITLE, (STRPTR)"Code", NULL, 0, NULL, NULL,
- NM_ITEM, "Make Final Object" , (STRPTR)"M" , 0 , 0L , (APTR)ProjectMakeFO,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Compile", (STRPTR)"C", 0, 0L, (APTR)ProjectCompile,
- NM_ITEM, (STRPTR)"Compile all", (STRPTR)"G", 0, 0L, (APTR)ProjectGenerate,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Launch" , NULL , 0 , 0L , NULL ,
- NM_SUB ,(STRPTR)"From CLI" , (STRPTR)"T" , 0 , 0L , (APTR)ProjectLaunch,
- NM_SUB , (STRPTR)"Parameters Line" , (STRPTR)"L" , 0 , 0L , (APTR)ProjectLaunchOpt,
- NM_ITEM, (STRPTR)"Information", (STRPTR)"Y", 0, 0L, (APTR)ProjectCodeInfo,
- NM_TITLE, (STRPTR)"Preferences", NULL, 0, NULL, NULL,
- NM_ITEM, "Main Options", "1", 0, 0L, (APTR)ProjectMainOpt,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Compiler", "2", 0, 0L, (APTR)ProjectCompilerOpt,
- NM_ITEM, (STRPTR)"Linker" , "3" , 0 , 0L , (APTR)ProjectLinkerOpt,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Directories", "4", 0, 0L, (APTR)ProjectDirectory,
- NM_ITEM, (STRPTR)"Editor" , "5" , 0 , 0L , (APTR)ProjectEditorOpt,
- NM_ITEM, (STRPTR)"Screen", "6", 0, 0L, (APTR)ProjectScreenOpt,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, (STRPTR)"Close Workbench", "W" , NULL ,0,(APTR)ProjectCloseWB,
- NM_ITEM,(STRPTR)"Open Workbench" , "Z" , NULL , 0 , (APTR)ProjectOpenWB,
- NM_ITEM, (STRPTR)"Save Preferences" , "V",0,0L,(APTR)SavePrefs,
- NM_END, NULL, NULL, 0, 0L, NULL };
-
- UWORD ParmsLineGTypes[] = {
- BUTTON_KIND,
- BUTTON_KIND,
- STRING_KIND
- };
-
- struct NewGadget ParmsLineNGad[] = {
- 33, 29, 101, 18, NULL, NULL, 1, PLACETEXT_IN, NULL, (APTR)NULL,
- 222, 29, 101, 18, NULL, NULL, 2, PLACETEXT_IN, NULL, (APTR)NULL,
- 8, 6, 346, 17, NULL, NULL, 3, PLACETEXT_ABOVE, NULL, (APTR)NULL
- };
-
- ULONG ParmsLineGTags[] = {
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (GTST_MaxChars), 256, (TAG_DONE)
- };
-
- UWORD ProjectGTypes[] = {
- LISTVIEW_KIND
- };
-
- UWORD MessGTypes[] = {
- LISTVIEW_KIND
- };
-
- UWORD DirSetGTypes[] = {
- BUTTON_KIND, BUTTON_KIND, BUTTON_KIND, BUTTON_KIND, BUTTON_KIND, BUTTON_KIND,
- TEXT_KIND, TEXT_KIND, TEXT_KIND, TEXT_KIND, TEXT_KIND TEXT_KIND,
- BUTTON_KIND,TEXT_KIND
- BUTTON_KIND, BUTTON_KIND,
- };
-
- UWORD CompileGTypes[] = {
- TEXT_KIND, BUTTON_KIND
- };
-
- struct NewGadget ProjectNGad[] = {
- 3, 15, -6, -25, NULL, NULL, GD_ModuleList, 0, NULL, (APTR)ModuleListClicked
- };
-
- struct NewGadget MessNGad[] = {
- 3, 3, -6, -14, NULL, NULL, GD_ModuleList, 0, NULL, (APTR)MessListClicked
- };
-
- struct NewGadget DirSetNGad[] = {
- 5, 4, 101, 15, (UBYTE *)"_Sources", NULL, GD_Source, PLACETEXT_IN, NULL, (APTR)SourceClicked,
- 5, 26, 101, 15, (UBYTE *)"Des_tination", NULL, GD_Dest, PLACETEXT_IN, NULL, (APTR)DestClicked,
- 5, 48, 101, 15, (UBYTE *)"_Includes", NULL, GD_Include, PLACETEXT_IN, NULL, (APTR)IncludeClicked,
- 5, 70, 101, 15, (UBYTE *)"_Libraries", NULL, GD_Lib, PLACETEXT_IN, NULL, (APTR)LibClicked,
- 5, 92, 101, 15, (UBYTE *)"_Objects", NULL, GD_Obj, PLACETEXT_IN, NULL, (APTR)ObjClicked,
- 5, 114, 101, 15, (UBYTE *)"_DICE", NULL, GD_Prg, PLACETEXT_IN, NULL, (APTR)PrgClicked,
- 113, 4, 206, 15, NULL, NULL, GD_SourceString, 0, NULL, NULL,
- 113, 26, 206, 15, NULL, NULL, GD_DestString, 0, NULL, NULL,
- 113, 48, 206, 15, NULL, NULL, GD_IncludeString, 0, NULL, NULL,
- 113, 70, 206, 15, NULL, NULL, GD_LibString, 0, NULL, NULL,
- 113, 92, 206, 15, NULL, NULL, GD_ObjString, 0, NULL, NULL,
- 113, 114, 206, 15, NULL, NULL, GD_PrgString, 0, NULL, NULL,
- 5, 136, 101, 15, (UBYTE *)"Auto_docs", NULL, GD_Prg, PLACETEXT_IN, NULL, (APTR)AutoDocClicked,
- 113, 136, 206, 15, NULL, NULL, GD_PrgString+1, 0, NULL, NULL,
- 30, 158 , 100 , 15 , NULL , NULL , 50 , PLACETEXT_IN , NULL , DirSetUseClicked,
- 189 , 158 , 100 , 15 , NULL , NULL , 50 , PLACETEXT_IN , NULL , DirSetCancelClicked,
- };
-
- struct NewGadget CompileNGad[] = {
- 5, 19, 284, 12, NULL, NULL, GD_CompileName, 0, NULL, NULL,
- };
-
- ULONG ProjectGTags[] = {
- (GTLV_ShowSelected), NULL, (TAG_DONE)
- };
-
- ULONG MessGTags[] = {
- (TAG_DONE)
- };
-
- ULONG DirSetGTags[] = {
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GTTX_Border), TRUE, (TAG_DONE),
- (GA_Disabled) , FALSE , (GT_Underscore), '_', (TAG_DONE),
- (GA_Disabled) , FALSE , (GTTX_Border), TRUE, (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- };
-
- ULONG CompileGTags[] = {
- (GTTX_Border), TRUE, (TAG_DONE),
- (TAG_DONE)
- };
-
- struct ColorSpec ScreenColors[] = {
- 0, 0x0C, 0x0B, 0x09,
- 1, 0x00, 0x00, 0x00,
- 2, 0x0F, 0x0F, 0x0F,
- 3, 0x08, 0x06, 0x05,
- 4, 0x00, 0x00, 0x0F,
- 5, 0x0F, 0x00, 0x00,
- 6, 0x00, 0x0F, 0x00,
- 7, 0x0F, 0x0F, 0x00,
- 8, 0x06, 0x02, 0x00,
- 9, 0x0A, 0x06, 0x04,
- 10, 0x0E, 0x0A, 0x08,
- 11, 0x00, 0x0A, 0x00,
- 12, 0x08, 0x0F, 0x0A,
- 13, 0x08, 0x08, 0x08,
- 14, 0x06, 0x06, 0x06,
- 15, 0x0C, 0x0C, 0x0C,
- ~0, 0x00, 0x00, 0x00 };
-
- UWORD DriPens[] = {
- 0,1,1,2,1,3,1,0,2,~0 };
-
- UWORD ComputeX( UWORD value )
- {
- return(( UWORD )((( FontX * value ) + 3 ) / 7 ));
- }
-
- UWORD ComputeY( UWORD value )
- {
- return(( UWORD )((( FontY * value ) + 6 ) / 13 ));
- }
-
- UWORD IComputeX( UWORD value )
- {
- return(( UWORD )((( 7 * value ) - 3 ) / FontX ));
- }
-
- UWORD IComputeY( UWORD value )
- {
- return(( UWORD )((( 13 * value ) - 6 ) / FontY ));
- }
-
- void ComputeFont( UWORD width, UWORD height )
- {
- Font = &Attr;
- Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;
- Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;
- FontX = Scr->RastPort.Font->tf_XSize;
-
- OffX = Scr->WBorLeft;
- OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
-
- if ( width && height ) {
- if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
- goto UseTopaz;
- if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
- goto UseTopaz;
- }
- return;
-
- UseTopaz:
- Font->ta_Name = (STRPTR)"topaz.font";
- FontX = FontY = Font->ta_YSize = 8;
- }
-
- char PubName[20] = "DICE_Project";
-
- BOOL Owner;
-
- int SetupScreen( void )
- {
- LONG PubNum = 9;
- char *temp,*temp2;
- struct TagItem *ti;
-
- if ( Scr )
- return(0);
- if ( ti = FindTagItem( SA_Pens , ScreenTags ) )
- if ( ((UWORD *)ti->ti_Data)[0]!=~0 )
- {
- ns.DetailPen = ((UWORD *)ti->ti_Data)[0];
- ns.BlockPen = ((UWORD *)ti->ti_Data)[1];
- }
- else
- {
- ns.DetailPen = 0;
- ns.BlockPen = 1;
- }
- ti = FindTagItem( SA_PubName , ScreenTags );
- Owner = FALSE;
- if ( ti )
- {
- temp2 = (char *)ti->ti_Data;
- temp = malloc( strlen( temp2 ) + 3 );
- strcpy( temp , temp2 );
- strcat( temp , ".0" );
- while ( !( Scr = OpenScreenTagList( &ns , ScreenTags ) ) && PubNum-- )
- {
- ti->ti_Data = temp;
- temp[ strlen(temp) - 1 ] ++;
- }
- if ( (char *)(ti->ti_Data) == temp )
- free( temp2 );
- if ( !Scr )
- Message( StrMessages[MSG_MESSAGE_CANT_OPEN_PUBSCR] , StrMessages[MSG_MESSAGE_ABORT] );
- Owner = TRUE;
- } else
- if ( !(Scr = LockPubScreen( NULL ) ) )
- Message( StrMessages[MSG_MESSAGE_WHERE_WB] , StrMessages[MSG_MESSAGE_ABORT] );
- if ( Scr )
- {
- ti = FindTagItem( SA_Font , ScreenTags );
- if ( ti )
- NFont = OpenDiskFont( (struct TextAttr *)ti->ti_Data );
- else
- NFont = OpenDiskFont( ×13 );
- VisualInfo = GetVisualInfoA( Scr , NULL );
- ComputeFont( 0, 0 );
- if ( !(Scr->Flags&WBENCHSCREEN) )
- PubScreenStatus( Scr , ~PSNF_PRIVATE );
- SetPubScreenModes( SHANGHAI|POPPUBSCREEN );
- return( 0L );
- }
- return( 1L );
- }
-
- int CloseDownScreen( void )
- {
- BOOL succ=NULL,retry=TRUE;
-
- if ( Owner )
- {
- while ( !(succ = CloseScreen( Scr )) && retry )
- {
- ActivateWindow( Scr->FirstWindow );
- retry = Message( StrMessages[MSG_MESSAGE_CANT_CLOSESCR] , StrMessages[MSG_MESSAGE_RETRY_ABORT] );
- }
- if ( succ )
- Scr = NULL;
- else
- return(0);
- }
- else
- {
- UnlockPubScreen( NULL , Scr );
- Scr = NULL;
- }
- if ( VisualInfo ) {
- FreeVisualInfo( VisualInfo );
- VisualInfo = NULL;
- }
- if ( NFont ) {
- CloseFont( NFont );
- NFont = NULL;
- }
- }
-
- void ProjectRender( void )
- {
- struct IntuiText it;
- UWORD cnt;
-
- for ( cnt = 0; cnt < Project_TNUM; cnt++ ) {
- CopyMem(( char * )&ProjectIText[ cnt ], ( char * )&it, (long)sizeof( struct IntuiText ));
- it.ITextFont = &topaz8;
- it.TopEdge = OffY + ComputeY( it.TopEdge ) - ( Font->ta_YSize >> 1 );
- PrintIText( ProjectWnd->RPort, &it, 0, 0 );
- }
- }
-
- BOOL Changed;
-
- int HandleProjectIDCMP( void )
- {
- struct IntuiMessage *m;
- struct MenuItem *n;
- int (*func)(void);
- BOOL running = TRUE;
-
- Changed = FALSE;
- while( !Changed && (m = GT_GetIMsg( ProjectWnd->UserPort )) ) {
-
- CopyMem(( char * )m, ( char * )&ProjectMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( ProjectMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( ProjectWnd );
- GT_EndRefresh( ProjectWnd, TRUE );
- break;
-
- case IDCMP_CLOSEWINDOW:
- return( ProjectCloseWindow() );
- break;
-
- case IDCMP_NEWSIZE:
- running = ProjectNewSize();
- return( running );
- break;
-
- case IDCMP_GADGETUP:
- func = ( void * )(( struct Gadget * )ProjectMsg.IAddress )->UserData;
- running = func();
- break;
-
- case IDCMP_MENUPICK:
- while( ProjectMsg.Code != MENUNULL ) {
- n = ItemAddress( ProjectMenus, ProjectMsg.Code );
- func = (void *)(GTMENUITEM_USERDATA( n ));
- running = func();
- if ( Changed )
- return;
- ProjectMsg.Code = n->NextSelect;
- }
- break;
- case IDCMP_VANILLAKEY:
- switch( ProjectMsg.Code ) {
- case 27:
- running = MessCloseWindow();
- break;
- case 13:
- ProjectEdit( );
- break;
- default:
- ProjectMsg.Code = tolower( ProjectMsg.Code );
- if ( isalpha(ProjectMsg.Code) ) {
- FindSelectedModule( ProjectMsg.Code );
- }
- break;
- }
- break;
- case IDCMP_RAWKEY:
- switch( ProjectMsg.Code ) {
- case CURSORUP:
- if ( ProjectMsg.Qualifier & (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) )
- PrevMessage( );
- else
- PrevModule( );
- break;
- case CURSORDOWN:
- if ( ProjectMsg.Qualifier & (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) )
- NextMessage( );
- else
- NextModule( );
- break;
- case 95:
- ChargeAide( "WIN_Sources" );
- break;
- }
- }
- }
- return( running );
- }
-
- int OpenProjectWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = ProjectLeft, wtop = ProjectTop, ww, wh;
-
- ww = ComputeX( ProjectWidth );
- wh = ComputeY( ProjectHeight );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if (( wleft + ww ) > Scr->Width ) ww = Scr->Width - OffX - Scr->WBorRight;
- if (( wtop + wh ) > Scr->Height ) wh = Scr->Height - OffY - Scr->WBorBottom ;
-
- if ( ! ( g = CreateContext( &ProjectGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < Project_CNT; lc++ ) {
-
- CopyMem((char * )&ProjectNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = &topaz8;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = IComputeX( ww ) + ng.ng_Width;
- ng.ng_Height = IComputeY( wh ) + ng.ng_Height;
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- ProjectGadgets[ lc ] = g = CreateGadgetA((ULONG)ProjectGTypes[ lc ], g, &ng, ( struct TagItem * )&ProjectGTags[ tc ] );
-
- while( ProjectGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- if ( ! ( ProjectMenus = CreateMenusA( ProjectNewMenu, 0L )))
- return( 3L );
-
- LayoutMenus( ProjectMenus, VisualInfo, TAG_DONE );
-
-
- ProjectZoom[0] = ProjectLeft;
- ProjectZoom[1] = ProjectTop;
- ProjectZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)ProjectWdt, strlen((char *)ProjectWdt )) + 80;
- ProjectZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( ProjectWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, IDCMP_NEWSIZE|LISTVIEWIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|IDCMP_RAWKEY,
- WA_Flags, WFLG_SIZEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SIZEBBOTTOM|WFLG_SMART_REFRESH,
- WA_Gadgets, ProjectGList,
- WA_Title, ProjectWdt,
- WA_PubScreen, Scr,
- WA_Activate , TRUE,
- WA_MinWidth, 360,
- WA_MinHeight, 100,
- WA_MaxWidth, ~0,
- WA_MaxHeight, ~0,
- WA_Zoom , ProjectZoom,
- TAG_DONE )))
- return( 4L );
-
- SetMenuStrip( ProjectWnd, ProjectMenus );
- GT_RefreshWindow( ProjectWnd, NULL );
-
- ProjectRender();
-
- return( 0L );
- }
-
- void CloseProjectWindow( void )
- {
- ProjectTop = ProjectWnd->TopEdge;
- ProjectLeft = ProjectWnd->LeftEdge;
-
- ProjectWidth = IComputeX( ProjectWnd->Width - OffX - Scr->WBorRight + 1 );
- ProjectHeight = IComputeY( ProjectWnd->Height - OffY - Scr->WBorBottom + 1 );
-
- Changed = TRUE;
-
- if ( ProjectMenus ) {
- ClearMenuStrip( ProjectWnd );
- FreeMenus( ProjectMenus );
- ProjectMenus = NULL; }
-
- if ( ProjectWnd ) {
- CloseWindow( ProjectWnd );
- ProjectWnd = NULL;
- }
-
- if ( ProjectGList ) {
- FreeGadgets( ProjectGList );
- ProjectGList = NULL;
- }
- }
-
- int HandleMessIDCMP( void )
- {
- struct IntuiMessage *m;
- struct MenuItem *n;
- int (*func)(void);
- BOOL running = TRUE;
-
- while( (MessWnd != NULL ) && (m = GT_GetIMsg( MessWnd->UserPort )) ) {
-
- CopyMem(( char * )m, ( char * )&MessMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( MessMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( MessWnd );
- GT_EndRefresh( MessWnd, TRUE );
- break;
-
- case IDCMP_VANILLAKEY:
- switch( MessMsg.Code ) {
- case 27:
- running = MessCloseWindow();
- return( running );
- break;
- case 13:
- ProjectEdit( );
- break;
- }
- break;
- case IDCMP_RAWKEY:
- switch( MessMsg.Code ) {
- case CURSORUP:
- if ( MessMsg.Qualifier & (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) )
- PrevMessage( );
- else
- PrevModule( );
- break;
- case CURSORDOWN:
- if ( MessMsg.Qualifier & (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) )
- NextMessage( );
- else
- NextModule( );
- break;
- case 95:
- ChargeAide( "WIN_Messages" );
- }
- break;
- case IDCMP_CLOSEWINDOW:
- running = MessCloseWindow();
- return( running );
- break;
-
- case IDCMP_NEWSIZE:
- running = MessNewSize();
- return(0);
- break;
-
- case IDCMP_GADGETUP:
- func = ( void * )(( struct Gadget * )MessMsg.IAddress )->UserData;
- running = func();
- break;
-
- case IDCMP_MENUPICK:
- while( MessMsg.Code != MENUNULL ) {
- n = ItemAddress( ProjectMenus, MessMsg.Code );
- func = (void *)(GTMENUITEM_USERDATA( n ));
- running = func();
- MessMsg.Code = n->NextSelect;
- }
- break;
- }
- }
- return( running );
- }
-
- int OpenMessWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = MessLeft, wtop = MessTop, ww, wh;
-
- ww = ComputeX( MessWidth );
- wh = ComputeY( MessHeight );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &MessGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < Project_CNT; lc++ ) {
-
- CopyMem((char * )&MessNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( MessWidth + ng.ng_Width );
- ng.ng_Height = ComputeY( MessHeight + ng.ng_Height);
-
- MessGadgets[ lc ] = g = CreateGadgetA((ULONG)MessGTypes[ lc ], g, &ng, ( struct TagItem * )&MessGTags[ tc ] );
-
- while( MessGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
-
- MessZoom[0] = MessLeft;
- MessZoom[1] = MessTop;
- MessZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)MessWdt, strlen((char *)MessWdt )) + 80;
- MessZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( MessWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, IDCMP_NEWSIZE|LISTVIEWIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|IDCMP_RAWKEY,
- WA_Flags, WFLG_SIZEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SIZEBBOTTOM|WFLG_SMART_REFRESH,
- WA_Gadgets, MessGList,
- WA_Title, MessWdt,
- WA_PubScreen, Scr,
- WA_MinWidth, 360,
- WA_MinHeight, 70,
- WA_MaxWidth, ~0,
- WA_MaxHeight, ~0,
- WA_Zoom, MessZoom,
- TAG_DONE )))
- return( 4L );
-
- if ( ROMVersion >= 39 )
- LendMenus( MessWnd , ProjectWnd );
- else
- SetMenuStrip( MessWnd, ProjectMenus );
- GT_RefreshWindow( MessWnd, NULL );
-
- return( 0L );
- }
-
- void CloseMessWindow( void )
- {
- MessTop = MessWnd->TopEdge;
- MessLeft = MessWnd->LeftEdge;
-
- MessWidth = IComputeX( MessWnd->Width - OffX - Scr->WBorRight + 1 );
- MessHeight = IComputeY( MessWnd->Height - OffY - Scr->WBorBottom + 1);
-
- if ( ProjectMenus )
- ClearMenuStrip( MessWnd );
-
- if ( MessWnd ) {
- CloseWindow( MessWnd );
- MessWnd = NULL;
- }
-
- if ( MessGList ) {
- FreeGadgets( MessGList );
- MessGList = NULL;
- }
- }
-
- int HandleDirSetIDCMP( void )
- {
- struct IntuiMessage *m;
- int (*func)(void);
- BOOL running = TRUE;
-
- while( DirSetWnd != NULL && (m = GT_GetIMsg( DirSetWnd->UserPort )) ) {
-
- CopyMem(( char * )m, ( char * )&DirSetMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( DirSetMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( DirSetWnd );
- GT_EndRefresh( DirSetWnd, TRUE );
- break;
-
- case IDCMP_VANILLAKEY:
- switch( DirSetMsg.Code ) {
- case 's':
- case 'S':
- running = SourceClicked( );
- break;
- case 't':
- case 'T':
- running = DestClicked( );
- break;
- case 'i':
- case 'I':
- running = IncludeClicked( );
- break;
- case 'l':
- case 'L':
- running = LibClicked( );
- break;
- case 'o':
- case 'O':
- running = ObjClicked( );
- break;
- case 'd':
- case 'D':
- running = PrgClicked( );
- break;
- case 'u':
- case 'U':
- running = DirSetUseClicked( );
- break;
- case 'A':
- case 'a':
- running = DirSetCancelClicked( );
- break;
- case 'c':
- case 'C':
- running = AutoDocClicked( );
- }
- break;
-
- case IDCMP_GADGETUP:
- func = ( void * )(( struct Gadget * )DirSetMsg.IAddress )->UserData;
- running = func();
- break;
-
- break;
- case IDCMP_RAWKEY:
- if ( DirSetMsg.Code == 95 )
- ChargeAide( "WIN_Dir" );
- break;
- }
- }
- return( running );
- }
-
- int OpenDirSetWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = 182, wtop = 200, ww, wh;
-
- ComputeFont( 325, 179 );
-
- ww = ComputeX( 325 );
- wh = ComputeY( 179 );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &DirSetGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < DirSet_CNT; lc++ ) {
-
- CopyMem((char * )&DirSetNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- DirSetGadgets[ lc ] = g = CreateGadgetA((ULONG)DirSetGTypes[ lc ], g, &ng, ( struct TagItem * )&DirSetGTags[ tc ] );
-
- while( DirSetGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
-
- DirSetZoom[0] = 182;
- DirSetZoom[1] = 200;
- DirSetZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)DirSetWdt, strlen((char *)DirSetWdt )) + 80;
- DirSetZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( DirSetWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, IDCMP_VANILLAKEY|BUTTONIDCMP|TEXTIDCMP|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, DirSetGList,
- WA_Title, DirSetWdt,
- WA_Activate , TRUE,
- WA_PubScreen, Scr,
- WA_Zoom, DirSetZoom,
- TAG_DONE )))
- return( 4L );
-
- if ( ROMVersion > 38 )
- LendMenus( DirSetWnd , ProjectWnd );
-
- GT_RefreshWindow( DirSetWnd, NULL );
-
- return( 0L );
- }
-
- void CloseDirSetWindow( void )
- {
- if ( DirSetWnd ) {
- CloseWindow( DirSetWnd );
- DirSetWnd = NULL;
- }
-
- if ( DirSetGList ) {
- FreeGadgets( DirSetGList );
- DirSetGList = NULL;
- }
- }
-
- void CompileRender( char *title )
- {
- struct IntuiText it;
- UWORD cnt;
-
- SetAPen( CompileWnd->RPort , 0 );
- RectFill( CompileWnd->RPort , OffX , OffY , ComputeX( 288 ) , ComputeY(Font->ta_YSize + 14) );
- for ( cnt = 0; cnt < Compile_TNUM; cnt++ ) {
- CopyMem(( char * )&CompileIText[ cnt ], ( char * )&it, (long)sizeof( struct IntuiText ));
- it.IText = title;
- it.ITextFont = &topaz8;
- it.LeftEdge = OffX + ComputeX( it.LeftEdge ) - ( IntuiTextLength( &it ) >> 1 );
- it.TopEdge = OffY + ComputeY( it.TopEdge ) - ( Font->ta_YSize >> 1 );
- PrintIText( CompileWnd->RPort, &it, 0, 0 );
- }
- }
-
- int OpenCompileWindow( char *title )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = ProjectWnd->LeftEdge + (ProjectWnd->Width>>1) - 146, wtop = ProjectWnd->TopEdge + (ProjectWnd->Height>>1) - 22, ww, wh;
-
- ww = ComputeX( 293 );
- wh = ComputeY( 44 );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &CompileGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < 1; lc++ ) {
-
- CopyMem((char * )&CompileNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = &topaz8;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- CompileGadgets[ lc ] = g = CreateGadgetA((ULONG)CompileGTypes[ lc ], g, &ng, ( struct TagItem * )&CompileGTags[ tc ] );
-
- while( CompileGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- CompileZoom[0] = 0;
- CompileZoom[1] = 0;
- CompileZoom[2] = 80;
- CompileZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( CompileWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, IDCMP_CLOSEWINDOW|TEXTIDCMP|BUTTONIDCMP|IDCMP_REFRESHWINDOW,
- WA_Flags, WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH|WFLG_RMBTRAP,
- WA_Gadgets, CompileGList,
- WA_Zoom, CompileZoom,
- WA_Title, CompileWdt,
- WA_PubScreen, Scr,
- TAG_DONE )))
- return( 4L );
-
- GT_RefreshWindow( CompileWnd, NULL );
-
- CompileRender( title );
- return( 0L );
- }
-
- void CloseCompileWindow( void )
- {
- if ( CompileWnd ) {
- CloseWindow( CompileWnd );
- CompileWnd = NULL;
- }
-
- if ( CompileGList ) {
- FreeGadgets( CompileGList );
- CompileGList = NULL;
- }
- }
-
- int OpenParmsLineWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = 188, wtop = 258, ww, wh;
-
- ComputeFont( 358, 50 );
-
- ww = ComputeX( 358 );
- wh = ComputeY( 50 );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &ParmsLineGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < 3; lc++ ) {
-
- CopyMem((char * )&ParmsLineNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- ParmsLineGadgets[ lc ] = g = CreateGadgetA((ULONG)ParmsLineGTypes[ lc ], g, &ng, ( struct TagItem * )&ParmsLineGTags[ tc ] );
-
- while( ParmsLineGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g ) {
- return( 2L );
- }
- }
-
- ParmsLineZoom[0] = 188;
- ParmsLineZoom[1] = 258;
- ParmsLineZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)ParmsLineWdt, strlen((char *)ParmsLineWdt )) + 80;
- ParmsLineZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( ParmsLineWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, IDCMP_VANILLAKEY|BUTTONIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, ParmsLineGList,
- WA_Title, ParmsLineWdt,
- WA_Zoom,ParmsLineZoom,
- WA_Activate , TRUE,
- WA_PubScreen, Scr,
- TAG_DONE )))
- return( 4L );
-
- GT_RefreshWindow( ParmsLineWnd, NULL );
-
- if ( ROMVersion >= 39 )
- LendMenus( ParmsLineWnd , ProjectWnd );
-
- return( 0L );
- }
-
- void CloseParmsLineWindow( void )
- {
- if ( ParmsLineWnd ) {
- CloseWindow( ParmsLineWnd );
- ParmsLineWnd = NULL;
- }
-
- if ( ParmsLineGList ) {
- FreeGadgets( ParmsLineGList );
- ParmsLineGList = NULL;
- }
- }
-
-